package com.zenith.common.result;

import lombok.Data;

import java.util.List;

@Data
public class PageResult<T> {
    // 当前页码
    private Long pageNum;
    // 每页数量
    private Long pageSize;
    // 总页数
    private Long total;
    // 总记录数
    private Long totalPage;
    // 数据列表
    private Object body;

    public PageResult() {
    }

    public PageResult(Long pageNum, Long pageSize, Long total, Long totalPage, Object body) {
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.total = total;
        this.totalPage = totalPage;
        this.body = body;
    }

    /**
     * 通用分页结果创建方法
     * @param pageNum 当前页码
     * @param pageSize 每页大小
     * @param total 总记录数
     * @param data 数据列表
     * @return PageResult实例
     */
    public static <T> PageResult<T> ofPage(long pageNum, long pageSize, long total, List<T> data) {
        PageResult<T> result = new PageResult<>();
        result.setPageNum(pageNum);
        result.setPageSize(pageSize);
        result.setTotal(total);
        result.setTotalPage((total + pageSize - 1) / pageSize);
        result.setBody(data);
        return result;
    }
}